import { defineStore } from 'pinia'
import gzStorageWrapper from '@/utils/gzStorageWrapper'
import { getCurrentUserInfo } from '@/api/login'

export const useUserStore = defineStore('user', {
    state: () => ({
        userInfo: {
            sysUserId: '', // 用户ID
            avatarUrl: '', // 头像
            allMenuRouteTree: [] as any, // 全部动态 router
            entIdList: [] as any, // 用户权限集合
            isAdmin: '', // 是否是超级管理员
            loginUsername: '', // 登录用户名
            state: '', // 用户状态
            sysType: '', // 所属系统
            telphone: '', // 手机号
            sex: '', // 性别
            mchType: '', // 商户类型 1-普通商户, 2-特约商户(服务商模式)
            userNo: '',//机构号
            belongInfoId: '',   // 机构号 取这个为准
            level: '',//机构等级
        },
        globalLoading: false, //全局加载
        isFreeLogin: false,//免登录
    }),

    actions: {
        putToken(token: string) {
            gzStorageWrapper.setToken(token, true)
        },
        getToken() {
            return gzStorageWrapper.getToken()
        },

        refUserInfo() { // 刷新用户信息
            const that = this

            return getCurrentUserInfo().then((bizData: any) => {
                this.userInfo = Object.assign({}, bizData)
            }).catch(error => {
                return Promise.reject(error)
            })

        },

        logout: () => {
            gzStorageWrapper.cleanToken()
            window.location.reload()
        },
        setGlobalLoading(val) {
            this.globalLoading = val
        },
        setIsFreeLogin(isFreeLogin) {
            gzStorageWrapper.setIsFreeLogin(isFreeLogin)
        },
        clearFreeLogin() {
            gzStorageWrapper.cleanFreeLogin()
        },
        getIsFreeLogin() {
            return gzStorageWrapper.getIsFreeLogin()
        }
    }

})
